package com.ruoyi.system.service;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.system.domain.dto.DmsValueDto;
import com.ruoyi.system.domain.po.BlsZlInfo;
import com.ruoyi.system.domain.po.BlsZlInfoRecord;
import com.ruoyi.system.domain.vo.DmsValueVo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

import static com.ruoyi.common.enums.DataSourceType.SLAVE;

@DataSource(DataSourceType.SLAVE)
public interface TbDataValueService {

    /**
     * 查询病例概要
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Zyblgy> queryZyblgy(Date startDate, Date endDate, List<String> jzlshList);

    /**
     * 查询入院病例记录
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Rybljl> queryRybljl(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询死亡记录信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Swjlxx> querySwjlxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询高值耗材使用记录_基本信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Gzhcsyjlxx> queryGzhcsyjlxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询高值耗材使用记录_耗材
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Gzhcsyjlhc> queryGzhcsyjlhc(Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Yizhu> getYizhu(@Param("hzlshList") List<String> hzlshList);

    /**
     * 24h内入出院记录_基本信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Hrcyjlxx> query24Hrcyjlxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询首次病程记录_基本信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Scbcjlxx>  queryScbcjlxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询住院诊疗临床路径记录
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Lcljjlxx> queryLcljjlxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询出院小结
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Cyxj>  queryCyxj(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询检验报告
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Jybgzb> queryJybgzb(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询检验结果指标
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Jyjgzbb> queryJyjgzbb(Date startDate, Date endDate, List<String> jzlshList);

    /**
     * 查询细菌结果
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Xjjgb> queryXjjgb(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询药敏结果
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Ymjgb> queryYmjgb(Date startDate, Date endDate, List<String> jzlshList);

    /**
     * 查询检验文档采集
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Jywdcj> queryJywdcj(Date startDate, Date endDate, List<String> jybgId);
    /**
     * 查询检查文档采集
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Jcwdcj> queryJcwdcj(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询住院病案基本信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Jbxx> queryJbxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询住院病案辅助信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Fzxx>  queryFzxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询住院病案诊断信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Zdxx> queryZdxx(Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Patient> queryHzxx(List<DmsValueDto.Hzxx> hzxxList);

    /**
     * 查询住院病案手术信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Ssxx>  querySsxx(Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.TbZyRydjmxb> queryTbZyRydjmxb( Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.TbZyJsmxb> queryTbZyJsmxb(Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.TbZyCydjmxb> queryTbZyCydjmxb(Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.TbBlMzblgy> queryTbBlMzblgy(Date startDate, Date endDate, List<String> jzlshList);

    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.TbSsSsmxb> queryTbSsSsmx(Date startDate, Date endDate, List<String> jzlshList);


    /**
     * 查询住院病案费用信息
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Fyxx> queryFyxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询住院病案首页重症监护记录
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Icuxx> queryIcuxx(Date startDate, Date endDate, List<String> jzlshList);
    /**
     * 查询住院日报数据
     * @param startDate
     * @param endDate
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.Zyrb> queryZyrb(Date startDate, Date endDate, List<String> jzlshList);

    /**
     * 查询文书
     * @return
     */
    @DataSource(DataSourceType.SLAVE)
    List<DmsValueVo.MtProgress> queryMtProgress(List<String> jzlshList);

    @DataSource(value = SLAVE)
     List<BlsZlInfoRecord> getMtPatientCode(BlsZlInfo blsZlInfo);
}
